package com.yidu.action;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.yidu.comment.Message;
import com.yidu.comment.Page;
import com.yidu.model.SnAudit;
import com.yidu.model.SnComSaDetail;
import com.yidu.model.SnCommodity;
import com.yidu.model.SnUser;
import com.yidu.model.SuWholesale;
import com.yidu.service.SuWholeSaleService;

/**
 * 批发订单ACTION
 * @Type SuWholeSaleAction
 * @author ZhuYiFan
 * @Date 2018年11月28日
 * @Time 下午1:21:02
 */
@Controller
@RequestMapping("/wholeSale")
public class SuWholeSaleAction {
	
	/**
	 * 注入批发订单service
	 */
	@Resource
	private SuWholeSaleService suWholeSaleService;
	
	/**
	 * 根据分公司ID查询所有批发订单
	 * @param page 当前页数
	 * @param limit 每页显示的行数
	 * @param suWholesale 批发订单对象
	 * @param session session 对象
	 * @return map 集合
	 */
	@RequestMapping("/findAll")
	@ResponseBody
	public Map<String, Object> findAll(String page,String limit,SuWholesale suWholesale,HttpSession session){
		//取到登陆的session
		SnUser user = (SnUser) session.getAttribute("user");
		//给批发订单分公司ID赋值
		suWholesale.setBraId(user.getBraId());
		//得到分页工具类
		Page pages=new Page();
		//给当前页数赋值
		pages.setCurPage(Integer.valueOf(page));
		//给每页行数赋值
		pages.setRows(Integer.valueOf(limit));
		//创建一个map对象
		Map<String, Object> maps=new HashMap<>();
		maps.put("page", pages);
		maps.put("suWholesale", suWholesale);
		//调用条件查询所有批发订单的方法
		List<SuWholesale> list=suWholeSaleService.findAll(maps);
		//调用条件查询批发订单行数的方法
		int count=suWholeSaleService.findCount(maps);
		//创建一个map集合
		Map<String, Object> map = new HashMap<>();
		map.put("code", 0);
		map.put("msg", 0);
		map.put("count",count);
		map.put("data", list);
		return map;
	}
	
	/**
	 * 增加批发订单和批发订单明细的方法
	 * @param str 批发明细字符串
	 * @param sum 批发订单总金额
	 * @param session session对象
	 * @return message 信息类对象
	 */
	@RequestMapping("/add")
	@ResponseBody
	public Message add(String str,String sum,HttpSession session){
		//创建Message对象
		Message message = new Message();
		//调用增加的方法
		int rows = suWholeSaleService.add(str,sum,session);
		//如果rows大于零则批发成功0否则批发失败1
		if(rows>0){
			message.setState(0);
			message.setMsg("批发成功!");
		}else{
			message.setState(1);
			message.setMsg("批发失败!");
		}
		return message;
	}
	
	/**
	 * 根据商品ID和分公司Id查询商品库存
	 * @param comId 商品ID
	 * @param session session对象
	 * @return int 商品库存数量
	 */
	@RequestMapping("/queryInventory")
	@ResponseBody
	public Integer queryInventory(String comId,HttpSession session){
		//取到登陆的session
		SnUser user = (SnUser) session.getAttribute("user");
		return suWholeSaleService.queryInventory(comId,user.getBraId());
	}
	
	/**
	 * 查看批发订单审核
	 * @param page 当前页数
	 * @param limit 每页显示的行数
	 * @param snAudit 批发审核对象
	 * @return map 批发订单审核map集合
	 */
	@RequestMapping("/findWholesale")
	@ResponseBody
	public Map<String, Object> findWholesale(String page,String limit,SnAudit snAudit){
		//得到分页工具类
		Page pages=new Page();
		//给当前页数赋值
		pages.setCurPage(Integer.valueOf(page));
		//给每页显示行数赋值
		pages.setRows(Integer.valueOf(limit));
		//创建一个map对象
		Map<String, Object> maps=new HashMap<>();
		maps.put("page", pages);
		maps.put("snAudit", snAudit);
		//调用条件查询所有批发审核的方法
		List<SnAudit> list=suWholeSaleService.findWholesale(maps);
		//调用查询批发审核行数的方法
		int count=suWholeSaleService.findWholesaleCount(maps);
		//创建一个map
		Map<String, Object> map = new HashMap<>();
		map.put("code", 0);
		map.put("msg", 0);
		map.put("count",count);
		map.put("data", list);
		return map;
	}
	
	/**
	 *   批发审核
	 * @param snAudit 审核对象
	 * @param session session对象
	 * @return message 对象
	 */
	@RequestMapping("/auditWholesale")
	@ResponseBody
	public Message auditWholesale(SnAudit snAudit,HttpSession session){
		//调用批发审核的方法
		int rows = suWholeSaleService.auditWholesale(snAudit,session);
		//创建Message对象
		Message message = new Message();
		//如果rows大于零审核成功1否则审核失败0
		if(rows>0){
			message.setState(1);
			message.setMsg("审核成功！");
		}else{
			message.setState(0);
			message.setMsg("审核失败!");
		}
		return message;
	}
	
	/**
	 *   批发退货审核
	 * @param snAudit 审核对象
	 * @param session session对象
	 * @return message 信息类对象
	 */
	@RequestMapping("/returnAudit")
	@ResponseBody
	public Message returnAudit(SnAudit snAudit,HttpSession session){
		//调用批发退货审核的方法
		int rows = suWholeSaleService.returnAudit(snAudit,session);
		//创建message对象
		Message message = new Message();
		//如果rows大于零审核成功1否则审核失败0
		if(rows>0){
			message.setState(1);
			message.setMsg("审核成功！");
		}else{
			message.setState(0);
			message.setMsg("审核失败!");
		}
		return message;
	}
	
	/**
	 * 确定批发的方法
	 * @param whId 批发订单ID
	 * @param session session对象
	 * @return message对象
	 */
	@RequestMapping("/confirmWholesale")
	@ResponseBody
	public Message confirmWholesale(String whId,HttpSession session){
		//调用确认批发的方法
		int rows = suWholeSaleService.confirmWholesale(whId,session);
		//创建Message对象
		Message message = new Message();
		//如果Rows大于零批发成功1否则批发失败0
		if(rows>0){
			message.setState(1);
			message.setMsg("批发成功！");
		}else{
			message.setState(0);
			message.setMsg("批发失败!");
		}
		return message;
	}
	
	/**
	 * 查询分公司批发的商品
	 * @param page 页数
	 * @param limit 每页的行数
	 * @param commodity 商品对象
	 * @param session session对象
	 * @return list 商品集合
	 */
	@RequestMapping("/queryBraProduction")
	@ResponseBody
	public Map<String, Object> queryBraProduction(String page,String limit,SnCommodity commodity,HttpSession session) {
		//取到登陆的session
		SnUser user = (SnUser) session.getAttribute("user");
		//给分公司Id赋值
		commodity.setBraId(user.getBraId());
		//得到分页工具类
		Page pages=new Page();
		//将数据封装
		pages.setCurPage(Integer.valueOf(page));
		pages.setRows(Integer.valueOf(limit));
		//创建一个map对象
		Map<String, Object> maps=new HashMap<>();
		maps.put("page", pages);
		maps.put("commodity", commodity);
		//调用条件查询分公司商品的方法
		List<SnCommodity> list=suWholeSaleService.findAllProduction(maps);
		//调用查询行数的方法
		int count=suWholeSaleService.findProductionCount(maps);
		Map<String, Object> map = new HashMap<>();
		map.put("code", 0);
		map.put("msg", 0);
		map.put("count",count);
		map.put("data", list);
		return map;
	}
	
	/**
	 * 根据批发订单查询库存
	 * @param whId 批发订单ID
	 * @param session session 对象
	 * @return  message 对象
	 */
	@RequestMapping("/findInventory")
	@ResponseBody
	public Message findInventory(String whId,HttpSession session){
		//调用查询库存的方法
		int rows = suWholeSaleService.findInventory(whId,session);
		//创建Message对象
		Message message = new Message();
		//如果rows大于零批发成功0否则库存不足，批发失败1
		if(rows>0){
			message.setState(0);
			message.setMsg("批发成功！");
		}else{
			message.setState(1);
			message.setMsg("库存不足,批发失败!");
		}
		return message;
	}
	
	/**
	 * 增加退货订单的方法
	 * @param str 退货明细字符串
	 * @param whId 批发订单ID
	 * @param result 退货原因
	 * @param session session对象
	 * @return message对象
	 */
	@RequestMapping("/refunds")
	@ResponseBody
	public Message refunds(String str,String whId,String result,HttpSession session){
		//创建message对象
		Message message = new Message();
		//调用退货的方法
		int rows = suWholeSaleService.refunds(str,whId,result,session);
		//如果rows大于零则退货成功0否则退货失败1
		if(rows>0){
			message.setState(0);
			message.setMsg("退货成功!");
		}else{
			message.setState(1);
			message.setMsg("退货失败!");
		}
		return message;
	}
	
	/**
	 * 查询所有批发退货审核
	 * @param page 当前页数
	 * @param limit 每页显示行数
	 * @param snAudit 审核对象
	 * @param session session对象
	 * @return map 批发退货审核集合
	 */
	@RequestMapping("/findReturn")
	@ResponseBody
	public Map<String, Object> findReturn(String page,String limit,SnAudit snAudit,HttpSession session){
		//得到分页工具类
		Page pages=new Page();
		//给当前页数赋值
		pages.setCurPage(Integer.valueOf(page));
		//给每页行数赋值
		pages.setRows(Integer.valueOf(limit));
		//创建一个map对象
		Map<String, Object> maps=new HashMap<>();
		maps.put("page", pages);
		maps.put("snAudit", snAudit);
		//调用条件查询所有批发退货审核的方法
		List<SnAudit> list=suWholeSaleService.findReturn(maps);
		//调用条件查询批发退货审核行数的方法
		int count=suWholeSaleService.findReturnCount(maps);
		//创建一个map集合
		Map<String, Object> map = new HashMap<>();
		map.put("code", 0);
		map.put("msg", 0);
		map.put("count",count);
		map.put("data", list);
		return map;
	}
	
	/**
	 * 查询批发退货明细的方法
	 * @param suWholesale 批发订单ID
	 * @return map对象
	 */
	@RequestMapping("/findReturnDetail")
	@ResponseBody
	public Map<String, Object> findReturnDetail(SuWholesale suWholesale){
		//调用查询退货明细的方法
		List<SnComSaDetail> list =  suWholeSaleService.findReturnDetail(suWholesale.getWhId());
		//调用条件查询批发退货订单明细行数的方法
		int count=suWholeSaleService.findReturnDetailCount(suWholesale.getWhId());
		//创建一个map集合
		Map<String, Object> map = new HashMap<>();
		map.put("code", 0);
		map.put("msg", 0);
		map.put("count",count);
		map.put("data", list);
		return map;
	}
	
	/**
	 * 查询批发退货审核详情
	 * @param whId 批发订单ID
	 * @return map集合
	 */
	@RequestMapping("/findAuditDetail")
	@ResponseBody
	public Map<String, Object> findAuditDetail(String whId){
		//调用查询审核明细的方法
		List<SnComSaDetail> list =  suWholeSaleService.findAuditDetail(whId);
		//调用条件查询批发退货订单明细行数的方法
		int count=suWholeSaleService.findAuditDetailCount(whId);
		//创建一个map集合
		Map<String, Object> map = new HashMap<>();
		map.put("code", 0);
		map.put("msg", 0);
		map.put("count",count);
		map.put("data", list);
		return map;
	}
	
	/**
	 * 根据批发订单ID和分公司ID查询是否能退货
	 * @param whId 批发订单ID
	 * @param session session对象
	 * @return message 对象
	 */
	@RequestMapping("/findMoney")
	@ResponseBody
	public Message findMoney(String whId,HttpSession session){
		//调用查询分公司金额的方法
		int rows = suWholeSaleService.findMoney(whId,session);
		//创建message对象
		Message message = new Message();
		//如果rows大于零则退货成功0否则财务金额不足，退货失败！1
		if(rows>0){
			message.setState(0);
			message.setMsg("退货成功！");
		}else{
			message.setState(1);
			message.setMsg("财务金额不足,退货失败!");
		}
		return message;
	}
	
	/**
	 * 确认退货的方法
	 * @param whId 批发订单ID
	 * @param session session对象
	 * @return message对象
	 */
	@RequestMapping("/returnedPurchase")
	@ResponseBody
	public Message returnedPurchase(String whId,HttpSession session){
		//调用确认退货的方法
		int rows = suWholeSaleService.returnedPurchase(whId,session);
		//创建message对象
		Message message = new Message();
		//如果rows大于零则退货成功！1否则退货失败！0
		if(rows>0){
			message.setState(1);
			message.setMsg("退货成功！");
		}else{
			message.setState(0);
			message.setMsg("退货失败!");
		}
		return message;
	}
}